#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include <sched.h>

int g_val =100;

// int main()
// {
//     pid_t id = fork();
//     if(id <0)
//     {
//         //child
//         //printf("child")
//         perror("fork");
//         return 0;
//     }else if(id==0)
//     {
//         //child
//         printf("child[%d]: %d : %p\n", getpid(), g_val, &g_val);
//     }else{
//         printf("parent[%d]: %d : %p\n", getpid(), g_val, &g_val);
//     }
//     sleep(1);
//     return 0;

// }


// int main()
// {
//     pid_t id = fork();
//     if(id <0)
//     {
//         //child
//         //printf("child")
//         perror("fork");
//         return 0;
//     }else if(id==0)
//     {
//         //child
//         g_val = 111;
//         printf("child[%d]: %d : %p\n", getpid(), g_val, &g_val);
//     }else{
//         sleep(3);
//         printf("parent[%d]: %d : %p\n", getpid(), g_val, &g_val);
//     }
//     sleep(1);
//     return 0;

// }

int un_gval;
int init_gval =100;
struct s
{
    int a;
    int b;
    int c;
};

int main(int argc,char* argv[],char* env[])
{
    printf("code addr:%p\n",main);
    char *str = "hello linux";
    printf("read only char addr:%p\n",str);
    printf("init global value addr:%p\n",&init_gval);
    printf("uninit global value addr:%p\n",&un_gval);
    char *heap1 =(char*) malloc(100);
    char *heap2 =(char*) malloc(100);
    char *heap3 =(char*) malloc(100);
    char *heap4 =(char*) malloc(100);

    static int a=0;
    printf("heap1 addr : %p\n", heap1);
    printf("heap1 addr : %p\n", heap2);
    printf("heap1 addr : %p\n", heap3);
    printf("heap1 addr : %p\n", heap4);

    printf("stack addr : %p\n", &str);
    printf("stack addr : %p\n", &heap1);
    printf("stack addr : %p\n", &heap2);
    printf("stack addr : %p\n", &heap3);
    printf("stack addr : %p\n", &heap4);
    printf("a addr:%p\n",&a);

    int i=0;
    for(;argv[i];i++)
    {
         printf("argv[%d]: %p\n",i, argv[i]);
    }
    for(i=0;env[i];i++)
    {
         printf("env[%d]: %p\n", i, env[i]);
    }
    return 0;
}